package com.shuzi.MediaShare.utils;

import java.io.File;
import java.util.ArrayList;

import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Environment;
import android.os.StatFs;

public class Util
{
	/**
	 * 获取sd卡路径
	 * 
	 * @return
	 */
	public static String getSDPath()
	{
		File sdDir = null;
		boolean sdCardExist = Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
		if (sdCardExist)
		{
			sdDir = Environment.getExternalStorageDirectory();// 获取跟目录
		}
		if (sdDir != null)
		{
			return sdDir.toString();
		}
		return null;
	}

	/**
	 * 获取sd卡剩余空间
	 * 
	 * @return
	 */
	public static long getSDFreeSize()
	{
		// 取得SD卡文件路径
		File path = Environment.getExternalStorageDirectory();
		StatFs sf = new StatFs(path.getPath());
		// 获取单个数据块的大小(Byte)
		long blockSize = sf.getBlockSize();
		// 空闲的数据块的数量
		long freeBlocks = sf.getAvailableBlocks();
		// 返回SD卡空闲大小
		return freeBlocks * blockSize; // 单位Byte
		// return (freeBlocks * blockSize)/1024; //单位KB
		// return (freeBlocks * blockSize) / 1024 / 1024; // 单位MB
	}

	/*
	 * searchFile 查找文件并加入到ArrayList 当中去
	 * 
	 * @String keyword 查找的关键词
	 * 
	 * @File filepath 查找的目录
	 */
	public static ArrayList<File> searchFile(String path, String type)
	{
		ArrayList<File> queryFiles = null;
		// 判断SD卡是否存在
		if (Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED))
		{
			queryFiles = new ArrayList<File>();
			File[] files = new File(path).listFiles();

			if (files.length > 0)
			{
				for (File file : files)
				{
					// 如果目录可读就执行（一定要加，不然会挂掉）
					if (file.canRead())
					{
						if (file.getName().endsWith("." + type))
						{
							queryFiles.add(file);
						}
					}
				}
			}
		}
		return queryFiles;
	}

	/**
	 * 获取ip地址
	 * 
	 * @return
	 */
	public static String setIp(Context context)
	{
		WifiManager wm = (WifiManager) context.getApplicationContext()
				.getSystemService(Context.WIFI_SERVICE);
		// 检查Wifi状态
		if (!wm.isWifiEnabled())
			wm.setWifiEnabled(true);
		WifiInfo wi = wm.getConnectionInfo();
		// 获取32位整型IP地址
		int ipAdd = wi.getIpAddress();
		// 把整型地址转换成“*.*.*.*”地址
		String ip = intToIp(ipAdd);
		return ip;
	}

	private static String intToIp(int i)
	{
		return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF)
				+ "." + (i >> 24 & 0xFF);
	}
}
